home *** CD-ROM | disk | FTP | other *** search
/ Aminet 37 / Aminet 37 (2000)(Schatztruhe)[!][Jun 2000].iso / Aminet / comm / bbs / cit_src_AD08.lha / NormalizeDate.c < prev    next >
C/C++ Source or Header  |  1998-06-20  |  2KB  |  69 lines

  1. /**
  2.     Copyrighted 1998 Custom Services, All rights reserved
  3.     This code may be used by anybody except Bill Gates,
  4.     his representatives, or Microsoft Inc.
  5.  
  6.     routine to fix a Citadel date string into
  7.     a "normalized" format
  8.  
  9.     Input:  date string in the format  y[yy]ymmmdd
  10.  
  11.     Output:  Update the date in place.
  12.  
  13.     Note:  the date passed will be overwritted with the
  14.     corrected date.
  15.  
  16.     Note:  logfile is your error logs file pointer.  On an erro
  17.     nothing is done which might screw things up royally...
  18.  
  19. **/
  20. #include <stdio.h>
  21. #include <stdlib.h>
  22. #include <string.h>
  23. #include <math.h>
  24. #include <dos.h>
  25. #include <ctype.h>
  26.  
  27. #include "ctdl.h"
  28.  
  29. extern FILE      *netLog;
  30.  
  31.  
  32.   void NormalizeDate(char *udate )
  33.      {
  34.      int bad;
  35.      int year;
  36.      char *mon_day;
  37.      char newdate[10];
  38.  
  39.      if( udate == NULL )
  40.        {
  41.        splitF(netLog, "Error: Null date.\n");
  42.        return;
  43.        };
  44.      if( *udate == '*') return;  /* anonymous message, no date */
  45.      if( strlen(udate) > 9 )
  46.        {
  47.        splitF(netLog, "Error: date(%s) is invalid!\n",udate);
  48.        /* might want to set udate to today's date */
  49.        return;
  50.        };
  51.      strcpy(newdate,udate);
  52.      year = atoi(udate);
  53.      bad = TRUE;
  54.      if( year >=0     && year <=   65 ) year += 70;  /* fix funny dates */
  55.      if( year >=   70 && year <=  135 ) bad = FALSE;
  56.      if( year >= 1970 && year <= 2205 ) bad = FALSE;
  57.      if( bad )
  58.        {
  59.        splitF(netLog, "Error: date(%s) is out of range!\n",udate);
  60.        /* might want to set udate to today's date */
  61.        return;
  62.        };
  63.      if( year >= 1970 ) year -= 1900;
  64.      mon_day = &udate[2];
  65.      while( isdigit(*mon_day) )mon_day++;
  66.      sprintf(newdate,"%d%s",year, mon_day);
  67.      strcpy(udate,newdate);
  68.      return;
  69. }